

set(BASE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")

set(
	NANOJIT_CORE_HEADER_FILES
	${BASE_SOURCE_DIR}/Allocator.h
	${BASE_SOURCE_DIR}/Assembler.h
	${BASE_SOURCE_DIR}/CodeAlloc.h
	${BASE_SOURCE_DIR}/CodeBlock.h
	${BASE_SOURCE_DIR}/CodeBlockList.h
	${BASE_SOURCE_DIR}/Containers.h
	${BASE_SOURCE_DIR}/ExprLirOptimizationPass.h
	${BASE_SOURCE_DIR}/float4Support.h
	${BASE_SOURCE_DIR}/HeapBlock.h
	${BASE_SOURCE_DIR}/LIR.h
	${BASE_SOURCE_DIR}/LirChainWriter.h
	${BASE_SOURCE_DIR}/LirFilter.h
	${BASE_SOURCE_DIR}/LirInstPrinter.h
	${BASE_SOURCE_DIR}/LirOptimizationPass.h
	${BASE_SOURCE_DIR}/LirStorage.h
	${BASE_SOURCE_DIR}/nanojit.h
	${BASE_SOURCE_DIR}/Native.h
	${BASE_SOURCE_DIR}/NativeCommon.h
	${BASE_SOURCE_DIR}/NanojitConfig.h
	${BASE_SOURCE_DIR}/NanojitCpuDetect.h
	${BASE_SOURCE_DIR}/RegAlloc.h
	${BASE_SOURCE_DIR}/StackAllocator.h
	${BASE_SOURCE_DIR}/vprof/vprof.h
	${BASE_SOURCE_DIR}/NanojitIntrinsics.h
	${BASE_SOURCE_DIR}/NanojitPortability.h
)

set(
	NANOJIT_CORE_SOURCE_FILES
	${BASE_SOURCE_DIR}/Allocator.cpp
	${BASE_SOURCE_DIR}/Assembler.cpp
	${BASE_SOURCE_DIR}/CodeAlloc.cpp
	${BASE_SOURCE_DIR}/CodeBlock.cpp
	${BASE_SOURCE_DIR}/CodeBlockList.cpp
	${BASE_SOURCE_DIR}/Containers.cpp
	${BASE_SOURCE_DIR}/ExprLirOptimizationPass.cpp
	${BASE_SOURCE_DIR}/float4Support.cpp
	${BASE_SOURCE_DIR}/HeapBlock.cpp
	${BASE_SOURCE_DIR}/LIR.cpp
	${BASE_SOURCE_DIR}/LirChainWriter.cpp
	${BASE_SOURCE_DIR}/LirFilter.cpp
	${BASE_SOURCE_DIR}/LirInstPrinter.cpp
	${BASE_SOURCE_DIR}/LirStorage.cpp
	${BASE_SOURCE_DIR}/Nanojit.cpp
	${BASE_SOURCE_DIR}/NanojitConfig.cpp
	${BASE_SOURCE_DIR}/RegAlloc.cpp
	${BASE_SOURCE_DIR}/StackAllocator.cpp
	${BASE_SOURCE_DIR}/LIRopcode.tbl
)

set(
	NANOJIT_UTILS_HEADER_FILES
	${BASE_SOURCE_DIR}/utils/IntrusiveLinkedList.h
	
)

set(
	NANOJIT_UTILS_SOURCE_FILES
	${BASE_SOURCE_DIR}/utils/IntrusiveLinkedList.cpp
)

# will define 
#  NANOJIT_PLATFORM_FILES 
#  NANOJIT_PLATFORM_INCLUDE_PATHS
add_subdirectory("platform/${CEM_HOST_PLATFORM}")

source_group("source\\platform" FILES ${NANOJIT_PLATFORM_FILES})
source_group("source\\utils" FILES ${NANOJIT_UTILS_HEADER_FILES} ${NANOJIT_UTILS_SOURCE_FILES})
source_group("source" FILES ${NANOJIT_CORE_HEADER_FILES} ${NANOJIT_CORE_SOURCE_FILES})

include_directories(
	${BASE_SOURCE_DIR}
	${NANOJIT_PLATFORM_INCLUDE_PATHS}
)

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")


add_library(
	nanojit STATIC 
	${NANOJIT_CORE_HEADER_FILES} ${NANOJIT_CORE_SOURCE_FILES}
	${NANOJIT_UTILS_HEADER_FILES} ${NANOJIT_UTILS_SOURCE_FILES}
	${NANOJIT_PLATFORM_FILES}
)

INSTALL(FILES ${NANOJIT_UTILS_HEADER_FILES} DESTINATION include/utils)
INSTALL(TARGETS nanojit RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

